﻿using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using Sinacor.Infra.Service.Validation;
using Sinacor.Infra.Service.Common;
using Sinacor.Infra.Common.Exceptions;
using Sinacor.Infra.Service.ExceptionHandling;

namespace Sinacor.Servico.Bovespa.Corretagem.BusinessLogic
{
    /// <summary>
    /// Business Logic TabelaPadrao
    /// </summary>
    public class TabelaPadrao : BaseBusinessLogic
    {
        #region Construtor
        public TabelaPadrao()
            : base()
        {

        }
        #endregion

        #region MÃ©todos

        /// <summary>
        /// MÃ©todo ConsultarProximoNumeroTabelaPadrao
        /// </summary>
        public System.Int32? ConsultarProximoNumeroTabelaPadrao()
        {
            ResourceAccess.TabelaPadrao raTabelaPadrao = new Sinacor.Servico.Bovespa.Corretagem.ResourceAccess.TabelaPadrao();
            return raTabelaPadrao.ConsultarProximoNumeroTabelaPadrao();
        }

        /// <summary>
        /// MÃ©todo ConsultarTabelaPadrao
        /// </summary>
        public List<BusinessEntity.TabelaPadrao> ConsultarTabelaPadrao(BusinessEntity.Parameter.ConsultarTabelaPadrao consultartabelapadrao)
        {
            ResourceAccess.TabelaPadrao raTabelaPadrao = new Sinacor.Servico.Bovespa.Corretagem.ResourceAccess.TabelaPadrao();
            return raTabelaPadrao.ConsultarTabelaPadrao(consultartabelapadrao);
        }

        /// <summary>
        /// MÃ©todo ExcluirTabelaPadrao
        /// </summary>
        public void ExcluirTabelaPadrao(BusinessEntity.TabelaPadrao tabelapadrao)
        {

            //Validar CalendÃ¡rio PolÃ­tica Corretagem
            BusinessEntity.PoliticaCorretagem bePoliticaCorretagem = new Sinacor.Servico.Bovespa.Corretagem.BusinessEntity.PoliticaCorretagem();
            bePoliticaCorretagem.Codigo = tabelapadrao.CodigoPoliticaCorretagem;
            new PoliticaCorretagem().ValidarCalendarioPoliticaCorretagem(bePoliticaCorretagem);

            //Excluir desconto diferenciado
            BusinessEntity.Parameter.ExcluirDescontoDiferenciado pDescontoDiferenciado = new Sinacor.Servico.Bovespa.Corretagem.BusinessEntity.Parameter.ExcluirDescontoDiferenciado();
            pDescontoDiferenciado.CodigoTabelaPadrao = tabelapadrao.Codigo;
            new DescontoDiferenciado().ExcluirDescontoDiferenciado(pDescontoDiferenciado);

            //Excluir Faixa 
            BusinessEntity.Parameter.ExcluirFaixa pExcluirFaixa = new Sinacor.Servico.Bovespa.Corretagem.BusinessEntity.Parameter.ExcluirFaixa();
            pExcluirFaixa.CodigoTabelaPadrao = tabelapadrao.Codigo;
            new Faixa().ExcluirFaixa(pExcluirFaixa);

            //Excluir Tabela PadrÃ£o               
            ResourceAccess.TabelaPadrao raTabelaPadrao = new Sinacor.Servico.Bovespa.Corretagem.ResourceAccess.TabelaPadrao();
            raTabelaPadrao.ExcluirTabelaPadrao(tabelapadrao);
        }

        /// <summary>
        /// MÃ©todo SalvarTabelaPadrao
        /// </summary>
        public void SalvarTabelaPadrao(BusinessEntity.TabelaPadrao tabelapadrao)
        {
            ResourceAccess.TabelaPadrao raTabelaPadrao = new Sinacor.Servico.Bovespa.Corretagem.ResourceAccess.TabelaPadrao();
            raTabelaPadrao.SalvarTabelaPadrao(tabelapadrao);
        }


        #endregion

    }
}
